<?php
namespace core\models;
/**
 * 面包屑链接封装
 */
class Widget_Breadcrumb {
    private $_trail;
    private $boolLinkForLast = false;

    /**
     * 面包屑
     */
    public function __construct() {
        $this->reset();
    }

    /**
     * 重置
     */
    public function reset() {
        $this->_trail = array();
    }

    /**
     * 增加面包屑
     * @param string $title 标题
     * @param string $link  链接url
     * @param string $target 是以什么方式打开链接，有：_blank、_parent、_self、_top等方式，同html的a标签中的target值
     */
    public function add($title, $link = '', $target = '') {
        $this->_trail[] = array('title' => $title, 'link' => $link, 'target' => $target);
    }

    /**
     * 设置是否启用面包屑最后一段文字带链接,
     * 一般情况下请勿随意调用防止搜索引擎死循环，若要使用请在调用trail之前使用！
     * @param  bool $boolLinkForLast 是否带链接，默认为false
     * @author mengdj
     * @date   2015.12.28
     */
    public function setLinkForLast($boolLinkForLast = false) {
        $this->boolLinkForLast = $boolLinkForLast;
    }

    /**
     * 生成面包屑链接用于显示
     * @param string $separator         分隔符
     * @param bool   $add_link_for_last 是否在最后一个成员也添加超链接默认false不加
     * @return string 返回准备显示的html字符串
     */
    public function trail($separator = ' - ', $add_link_for_last = false) {
        $trail_string = '';
        if (!$add_link_for_last && $this->boolLinkForLast) {
            $add_link_for_last = $this->boolLinkForLast;
        }
        for ($i = 0, $n = sizeof($this->_trail); $i < $n; $i++) {
            if ((($i + 1) < $n || $add_link_for_last == true) && isset($this->_trail[$i]['link']) && ($this->_trail[$i]['link'])) {
                $trail_string .= '<a href="' . $this->_trail[$i]['link'] . '" '.($this->_trail[$i]['target'] ? ' target="'.$this->_trail[$i]['target'].'" ':'').' class="ZF_HeaderNavigation">' . $this->_trail[$i]['title'] . '</a>';
            } else {
                $trail_string .= $this->_trail[$i]['title'];
            }

            if (($i + 1) < $n)
                $trail_string .= $separator;
        }

        return $trail_string;
    }
}